#ifndef DEFMOD_DEFAULT_MODULE_HPP
#define DEFMOD_DEFAULT_MODULE_HPP

#include "Module/AbstractModule.hpp"

namespace Module
{

/// \ingroup Module
/// \brief It provides the default setup of the application, registering the common model entities, storages, user 
///		interface commands, etc.
class MODULE_API DefaultModule: public AbstractModule
{
public:
	/// \sa AbstractModule::uid() const
	virtual const std::string& uid() const;

	/// \brief It performs additional initializations.
	/// \details
	///		The following extra initializations are performed:
	///			\li Loading storage configurations from file
	virtual void initialize();
protected:
	/// \brief It registers the common commands, menus, etc.
	virtual void registerUICommands();

	virtual void registerStorageCfgTypes();
public:
	static const std::string FILE_MENU_ID;
	static const std::string CONFIG_MGMT_CMD_ID;
};

} // namespace Module

#endif // DEFMOD_DEFAULT_MODULE_HPP
